package org.tissou.server.Operations;

import org.tissou.client.Services.Compte;
import org.tissou.client.Services.Parametres;
import org.tissou.server.Utils.Variables_Globales;
import org.tissou.client.Services.MonException;
import org.tissou.client.Services.CategorieInfos;

import java.util.Date;

/**
 * Created by IntelliJ IDEA.
 * User: Claire
 * Date: 03-Feb-2009
 * Time: 10:40:10
 * To change this template use File | Settings | File Templates.
 */
public class Operation_Pret extends Operation_Dette{
  public Operation_Pret (Date date, Compte compte_debourseur, Compte compte_receveur,
                                  Float somme, boolean verifie){
    super(date,  compte_debourseur, compte_receveur, somme, verifie);
    Categorie = (Variables_Globales.Tout.rechercherCategorieDansDescendance("Pret")).getInfos();
    Libelle_Donneur = String.format("Pret a %s", compte_receveur.getProprio().getNom());
    Libelle_Receveur = String.format("Pret de %s", compte_debourseur.getProprio().getNom());
    TypeTransaction_Nom = "Operation Recette";
  }

  public Operation_Pret (Date date, Compte compte_debourseur, Compte compte_receveur,
                                  Float somme, boolean verifie, CategorieInfos categorie){
    super(date,  compte_debourseur, compte_receveur, somme, verifie, categorie);
    Libelle_Donneur = String.format("Pret a %s", compte_receveur.getProprio().getNom());
    Libelle_Receveur = String.format("Pret de %s", compte_debourseur.getProprio().getNom());
    TypeTransaction_Nom = "Operation Recette";
  }

  
 //Operation_Pret:
//  Date Date = date;
//  Boolean Verifie = verifie;
//  OperationFactoryInfos.TypeOperation Typeoperation = OPERATION_PRET;
//
//  List<CategorieInfos> Categories = void || categorie;
//  List<ProprietaireInfos> Proprietaires = void;
//  List<Compte> Comptes = compte debourseur, compte receveur;
//  List<String> Libelles = new ArrayList<String>() = void;
//  List<Dette> Dettes = new ArrayList<Dette>() = void;
//  List<MonnaieInfos> Monnaies = new ArrayList<MonnaieInfos>() = void;
//  List<Float> Sommes = new ArrayList<Float>() = somme concernee;
  private static Operation_Pret ConstruireAvecParametres_Construction(Parametres parametres) {

    if (parametres.NombreCategories()==0){
    return new Operation_Pret(parametres.getDate(),
        parametres.getComptes().get(0),
        parametres.getComptes().get(1),
        parametres.getSommes().get(0),
        parametres.getVerifie());
    }
    else{
      return new Operation_Pret(parametres.getDate(),
        parametres.getComptes().get(0),
        parametres.getComptes().get(1),
        parametres.getSommes().get(0),
        parametres.getVerifie(),
        parametres.getCategories().get(0));
    }
      
  }

  public static Operation_Pret ConstruireAvecParametres(Parametres parametres){
    if(ConstruireAvecParametres_Compatibilite(parametres)){
      return ConstruireAvecParametres_Construction(parametres);
    }
    else
      throw new MonException("Les parametres ne sont pas compatibles pour creer cette operation.");
  }

}
